#define _CRT_SECURE_NO_WARNINGS 1

#include<iostream>
#include<queue>
#include<vector>
#include<cstdlib>

using namespace std;

typedef pair<int, int> PII;
#define x first
#define y second

//typedef long long LL;
//
//int main()
//{
//    LL n;
//    cin >> n;
//    LL res = 1;
//    for (LL i = 2; i * i <= n; i++)
//    {
//        if (n % i == 0)
//        {
//            int s = 0;
//            while (n % i == 0)
//            {
//                s++;
//                n /= i;
//            }
//            if (s % 2) res *= i;
//        }
//    }
//    if (n > 1) res *= n;
//    cout << res;
//    return 0;
//}

//const int N = 200010;
//int n, m;
//int s[N];
//priority_queue<PII, vector<PII>, greater<PII>> q[N];
//
//int main()
//{
//    scanf("%d%d", &n, &m);
//    for (int i = 1; i <= n; i++) scanf("%d", &s[i]);
//    while (m--)
//    {
//        int a, b, c, d;
//        scanf("%d%d%d%d", &a, &b, &c, &d);
//        while (q[b].size() && q[b].top().x <= a)
//        {
//            s[b] += q[b].top().y;
//            q[b].pop();
//        }
//        if (s[b] < d) puts("-1");
//        else
//        {
//            q[b].push({ a + c, d });
//            s[b] -= d;
//            printf("%d\n", s[b]);
//        }
//    }
//    return 0;
//}


//int main()
//{
//	int a = 4;
//	int b = 3;
//	int nmax = a;
//	int nmin = b;
//	if (a < b)
//	{
//		nmax = b;
//		nmin = a;
//	}
//	while (nmax != nmin)
//	{
//		nmax /= 2;
//		if (nmax < nmin)
//		{
//			swap(nmax, nmin);
//		}
//	}
//	printf("%d", nmax);
//}


//int n;
//
//int main()
//{
//    int cnt = 0, nmax = 0;
//    scanf("%d", &n);
//    while (n)
//    {
//        if (n & 1) cnt++;
//        else
//        {
//            if (cnt > nmax) nmax = cnt;
//            cnt = 0;
//        }
//        n >>= 1;
//    }
//    if (cnt > nmax) nmax = cnt;
//    printf("%d", nmax);
//    return 0;
//}


//class A
//{
//public:
//	~A()
//	{
//		delete a;
//	}
//	void func();
//	int* a;
//};
//
//void A:: func()
//{
//	delete this;
//}
//
//int main()
//{
//	A* a = new A();
//	a->func();
//	return 0;
//}


//const int N = 1000010;
//int n, m;
//int w[N], s[N];
//
//int main()
//{
//    scanf("%d%d", &n, &m);
//    for (int i = 1; i <= n; i++)
//    {
//        w[i] = i;
//        for (int j = i; j; j /= 10)
//            s[i] += j % 10;
//    }
//
//    sort(w + 1, w + n + 1, [&](int a, int b) {
//        if (s[a] != s[b]) return s[a] < s[b];
//        return a < b;
//        });
//
//    printf("%d\n", w[m]);
//    return 0;
//}


//int binInsert(int n, int m, int j, int i) {
//    vector<int> v;
//    v.reserve(32);
//    while (n)
//    {
//        v.push_back(n & 1);
//        n >>= 1;
//    }
//    int cnt = 0;
//    while (m)
//    {
//        if (cnt + j > i) break;
//        if (m & 1) v[cnt + j] = 1;
//        cnt++;
//        m >>= 1;
//    }
//    long long p = 1, res = 0;
//    for (int i = 0; i < v.size(); i++)
//    {
//        res += v[i] * p;
//        p *= 2;
//    }
//    return res;
//}
//
//int main()
//{
//    cout << binInsert(1024, 19, 2, 6);
//    return 0;
//}


const int N = 1010;
int n, cnt;
int prime[N];
bool st[N];

void getprime()
{
    for (int i = 2; i <= N; i++)
    {
        if (!st[i]) prime[cnt++] = i;
        for (int j = 0; prime[j] * i <= N; j++)
        {
            int t = prime[j] * i;
            st[t] = true;
            if (i % prime[j] == 0) break;
        }
    }
}

int main()
{
    cin >> n;
    getprime();                                                                                                                                                                   
    int minlen = 10000;
    int res1, res2;
    for (int i = 0; i < cnt; i++)
    {
        for (int j = i; j < cnt; j++)
        {
            if (prime[i] + prime[j] > n) break;
            if (prime[i] + prime[j] == n)
            {
                if (abs(prime[j] - prime[i]) < minlen)
                {
                    res1 = prime[i];
                    res2 = prime[j];
                    minlen = abs(prime[j] - prime[i]);
                }
            }
        }
    }
    printf("%d\n%d\n", res1, res2);
    return 0;
}